In designing electronic circuits and equipment, for example, digital processors (DSP's), fundamental steps in the design process include the testing of the equipment (the target device), the diagnosis of problems, and the correction of the problems.
Presently, complex software tools are used to evaluate the equipment and enable corrective measures to be taken. The software tools are used with an assembler and loader. Typically, the software tools comprise hundreds of thousands of lines of code. These software tools let the user load diagnostic programs into, for example, an embedded processor such as a DSP. The loaded programs are executed, with outputs from the diagnostic program being output to the host computer at various breakpoints.
The testing and diagnosis process requires that all the software tools be in place before test programs can be written and the new hardware debugged. Delays are prevalent because conventional software tools, which are extremely complex and lengthy, may not be available when the hardware is in the early testing or prototype phase. They must be written for each new device being developed, i.e., they are project specific. The assembler and linker, however, are usually available much earlier because they are standard tools requiring little or no modification and because they are needed in several earlier modeling and simulation steps in the development of the more complex software tool sets.
In addition to the above, the use of the final software tools package requires several other steps and files to be set up in order to operate properly. Obviously there is more chance of confusion on the part of the board designers when simultaneously developing hardware and the software to test it in parallel.
Breakpoints are locations in a program that allow the host computer to interrupt the normal instruction flow to look at results of a test or tests being performed. The breakpoints typically are designed into the chip architecture and are, thus, unchangeable once the chip is constructed. In operation, the diagnostic program will run up to any breakpoint and stop the processor. Then, results obtained by the diagnostic program up to that breakpoint are transmitted back to the host computer. The software tool package will then await further input from the host computer before proceeding.
With such systems there are several problems. First, the stopping of the processor results in a significant amount of wasted time. The entire processing operation stops while the host computer evaluates the input from the embedded processor and sends an instruction back to the embedded processor or awaits human intervention in the form of input keystrokes. In addition, since the processor stops while awaiting these additional instructions, the monitoring of real-time test results is not possible.
Further, since the breakpoints are fixed by the chip architecture, they are limited in number and their locations are loaded by the host, i.e., there is limited flexibility regarding the number or locations of the breakpoints.
In view of the above constraints, it is desirable to have a process available that will allow designers to design devices using a simple procedure. It would also be desirable to utilize standard assemblers and linkers from the existing software tool sets since they are available in advance of the completion of entire software tools package. It would be further desirable to have breakpoints embedded into downloadable target software so that the breakpoints could be moved or changed at any time.
It would also be desirable to be able to download a data file, such as a debugging file or a calibration file, from the host to the target device and store the downloaded program for use during the running of the target software.